package com.hancai.barrage.service;

import com.hancai.barrage.model.Page;
import com.hancai.barrage.pagehelper.QueryObject;

import java.util.List;

/**
 * @author 涵菜
 * @version 1.0
 * 内部的CRUD
 */
public interface SysService<T,P> {
    void save(T obj);
    void updateById(T obj);
    void deleteById(P id);
    T selectById(P id);
    //查询所有
    List<T>selectAll();

    /**
     * 分页查询
     * @param qo 查询对象
     * @return 返回分页结果
     * default:实现类可以选择重写default query方法，也可以选择默认实现-返回空页
     */
    default Page<T> query(QueryObject qo){
       return Page.empty(qo.getPageNum(),qo.getPageSize());
    }

    /**
     * 逻辑删除方法
     * @param id
     * @param deleted 布尔类型是否删除
     */
    default void logicDeleteById(Long id, boolean deleted){

    }
}
